package com.mayikt.edu.base;

import com.mayikt.edu.constant.ApiConstants;
import java.util.HashMap;
import java.util.Map;
import lombok.Data;

/**
 * @author wangjin
 * @title: BaseApiService
 * @projectName mayikt-cloud
 * @description: 微服务接口实现该接口可以使用传递参数可以直接封装统一返回结果集
 * @date 2022/4/10 0010 15:53
 */
@Data
public class BaseApiController<T> {
  public BaseResponse<T> setResultDb(int result) {
    return result > 0 ? setResultSuccess() : setResultError();
  }

  public BaseResponse<T> setResultError(Integer code, String msg) {
    return setResult(code, msg, null);
  }

  /**
   * 返回错误，可以传msg
   *
   * @param msg
   * @return
   */
  public BaseResponse<T> setResultError(String msg) {
    return setResult(ApiConstants.HTTP_RES_CODE_500.getCode(), msg, null);
  }

  /**
   * 返回错误，可以传msg
   *
   * @return
   */
  public BaseResponse<T> setResultError() {
    Map<String, Object> errorResultMap = new HashMap<String, Object>();
    errorResultMap.put("code", "500");
    errorResultMap.put("msg", "系统出现错误!");
    return setResult(
        ApiConstants.HTTP_RES_CODE_500.getCode(),
        ApiConstants.HTTP_RES_CODE_500.getValue(),
        (T) errorResultMap);
  }

  /***
   * 返回成功，可以传data值
   * @param data
   * @return
   */
  public BaseResponse<T> setResultSuccessData(T data) {
    return setResult(
        ApiConstants.HTTP_RES_CODE_200.getCode(), ApiConstants.HTTP_RES_CODE_200.getValue(), data);
  }

  /**
   * 返回成功，沒有data值
   *
   * @return
   */
  public BaseResponse<T> setResultSuccess() {
    return setResult(
        ApiConstants.HTTP_RES_CODE_200.getCode(), ApiConstants.HTTP_RES_CODE_200.getValue(), null);
  }

  /**
   * 通用封装 通用封装
   *
   * @param code
   * @param msg
   * @param data
   * @return
   */
  public BaseResponse<T> setResult(Integer code, String msg, T data) {
    return new BaseResponse<T>(code, msg, data);
  }
}
